package stack

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method("GET")
        url("/api/v3/stacks/pageable") {
            queryParameters {
                parameter("page", 1)
                parameter("pageSize", 10)
            }
        }
    }
    response {
        status(200)
        headers {
            contentType(applicationJsonUtf8())
        }
        body("""
            {
                "content": [{
                    "description": "dsdsd",
                    "image": "def",
                    "createTime": "2018-09-12 08:08:16.0",
                    "referenceNumber": 1,
                    "makerId": 1,
                    "buildNumber": 1,
                    "title": "node",
                    "id": 1,
                    "available": true,
                    "maker": ""
                }],
                "totalElements": 3,
                "totalPages": 1,
                "size": 10,
                "number": 0
            }
        """)
        bodyMatchers {
            jsonPath('$.content[*].description', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].image', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].createTime', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].referenceNumber', byRegex(number()))
            jsonPath('$.content[*].makerId', byRegex(number()))
            jsonPath('$.content[*].buildNumber', byRegex(number()))
            jsonPath('$.content[*].title', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].id', byRegex(number()))
            jsonPath('$.content[*].available', byRegex(anyBoolean()))
            jsonPath('$.content[*].maker', byType())
            jsonPath('$.totalElements', byRegex(number()))
            jsonPath('$.totalPages', byRegex(number()))
            jsonPath('$.size', byRegex(number()))
            jsonPath('$.number', byRegex(number()))
        }
    }
}
